#ifndef CARDS_H
#define CARDS_H

#include "Card.h"
#include <QSet>
#include <QRandomGenerator>//生成随机数

class Cards
{
public:
    //升序或降序枚举
    enum SortType{
        Asc,//升序
        Desc,//降序
        NoSort//不排序
    };

    Cards();
    explicit Cards(const Card& card);

    //添加和删除扑克牌函数
    void add(const Card& card);
    void add(const Cards &cards);
    void add(const QVector<Cards>& cards);
    void remove(Card& card);
    void remove(const Cards &cards);
    void remove(const QVector<Cards>& cards);

    //一次性插入多张图片（重载操作符 << ）
    Cards& operator <<(const Card& card);
    Cards& operator <<(const Cards& cards);

    //返回扑克牌的数量、是否为空、清空扑克牌
    int cardCount();
    bool isEmpty();
    void clear();

    //最大点数、最小点数、指点点数的牌的数量、某张牌是否在集合中
    Card::CardPoint maxPoint();
    Card::CardPoint minPoint();
    int pointCount(Card::CardPoint point);
    bool contains(const Card& card);
    bool contains(const Cards& cards);

    //随机取出一张牌
    Card takeRandCard();

    //从无序转换成有序（QSet->QVector）
    CardList toCardList(SortType type = Desc);


private:
    QSet<Card> m_cards;//是不能进行排序的，只能无序
};

#endif // CARDS_H
